<?php

/**
 * CmppHead.
 *
 * @author  yyc
 * @version 1.0
 * @package main
 * @date 2017-06-08 0008
 * @time 10:12:46
 */

/**
 *
 * ━━━━━━神兽出没━━━━━━
 * 　　　┏┓　　　┏┓
 * 　　┏┛┻━━━┛┻┓
 * 　　┃　　　　　　　┃
 * 　　┃　　　━　　　┃
 * 　　┃　┳┛　┗┳　┃
 * 　　┃　　　　　　　┃
 * 　　┃　　　┻　　　┃
 * 　　┃　　　　　　　┃
 * 　　┗━┓　　　┏━┛Code is far away from bug with the animal protecting
 * 　　　　┃　　　┃    神兽保佑,代码无bug
 * 　　　　┃　　　┃
 * 　　　　┃　　　┗━━━┓
 * 　　　　┃　　　　　　　┣┓
 * 　　　　┃　　　　　　　┏┛
 * 　　　　┗┓┓┏━┳┓┏┛
 * 　　　　　┃┫┫　┃┫┫
 * 　　　　　┗┻┛　┗┻┛
 *
 * ━━━━━━感觉萌萌哒━━━━━━
 */

namespace cmpp;

use server\Table;
use cmpp\CmmpPack;
class CmppHead
{
    public static function size(){
        return 12;
    }

    public static function headPack($commandId, $length){
        $Total_Length = intval($length) + self::size();
        $Sequence_Id = self::getSequence();
        $bin_head = CmmpPack::pack(['total_length' => ['N',$Total_Length],'Command_Id' => ['N',$commandId],'Sequence_Id' => ['N',$Sequence_Id] ]);
        return $bin_head;
    }

    public  function getSequence(){
        $table = Table::get_instance();
        //var_dump($table->getSequenceId());
        return $table->getSequenceId();
    }

    public static function unHeadPack($data){
        if(!$data){
            return '';
        }
        $head = unpack("NTotal_Length/NCommand_Id/NSequence_Id", $data);
        return $head;
    }

}